Me pregunto si hay una manera de hacer referencia a la "clase actual" en lugar de una clase por nombre, desde una clase de Javascript.
Por ejemplo:
class MyBase{ static makeNew(id){ const newInstance = new --currentClass--;// magic happens here newInstance.id = id; return newInstance; } } class A extends MyBase{} class B extends MyBase{} const newA = A.makeNew(1); const newB = B.makeNew(379); ¿Hay alguna manera de escribir MyBase::makeNew de tal manera que cuando se llama desde la clase A , devuelve una nueva instancia de A , pero cuando se llama desde la clase B , devuelve una nueva instancia de B ?
Dado que las firmas de llamada son como:
A.makeNew(1); B.makeNew(379); this puede parecer familiar: puede usarlo para hacer referencia al objeto al que se está llamando.
class MyBase{ static makeNew(id){ const newInstance = new this(); newInstance.id = id; return newInstance; } } class A extends MyBase{} class B extends MyBase{} const newA = A.makeNew(1); const newB = B.makeNew(379); console.log(newA instanceof A); console.log(newB instanceof B);